home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / demostu2 / mandelb1.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-12-13  |  1.3 KB  |  81 lines

  1. PROGRAM MANDELBROT;
  2. {
  3.   Mandelbrot 1
  4.   - by Bjarke Viksφe
  5.   aug 1994
  6.   Math co-processer will speed things dramatically...
  7. }
  8.  
  9. {$A+,B-,G+,E+,I+,N+,X+}
  10. {$C FIXED PRELOAD PERMANENT}
  11.  
  12. USES
  13.     DEMOINIT;
  14.  
  15. {{$DEFINE DEBUG}
  16.  
  17. (*------------------------------------------------*)
  18.  
  19. procedure InitDemo;
  20. var
  21.     i : integer;
  22. begin
  23.     ClearWholeScreen;
  24.     for i:=0 to 15 do setRGB(16-i, i,i*3,i*3);
  25. end;
  26.  
  27. procedure UninitDemo;
  28. var
  29.     i : integer;
  30. begin
  31. end;
  32.  
  33. (*------------------------------------------------*)
  34.  
  35. procedure PaintMandelbrot;
  36. var
  37.     u,v : integer;
  38.     rl,rh,il,ih : real;
  39.     x,y,xx,yy,dx,dy : real;
  40.     r,i,s : real;
  41.     n,nmax : word;
  42. begin
  43.     rl:=-2; {lowest r-value}
  44.     rh:=0.5;  {highest r-value}
  45.     il:=-1.5; {lowest i-value}
  46.     ih:=1.5;  {highest i-value}
  47.     nmax:=12;  {number of iterations}
  48.  
  49.     dx:=(rh-rl) / 160;
  50.     dy:=(ih-il) / 100;
  51.     yy:=il-dy;
  52.  
  53.     for u:=0 to 99 do begin
  54.         yy:=yy+dy;
  55.         xx:=rl-dx;
  56.         for v:=0 to 159 do begin
  57.             xx:=xx+dx;
  58.             n:=0; r:=0.0; i:=0.0; s:=0.0;
  59.             repeat
  60.                 x:=r;
  61.                 y:=i;
  62.                 r:=sqr(x) - sqr(y) + xx;
  63.                 i:=2.0*x*y + yy;
  64.                 s:=sqr(r) + sqr(i);
  65.                 inc(n);
  66.             until (n=nmax) OR (s>4.0);
  67.             if (n=nmax) then SetPixel(0,v,u,0) else SetPixel(0,v,u,n);
  68.         end;
  69.     end;
  70. end;
  71.  
  72.  
  73. begin
  74.     OpenScreen;
  75.     InitDemo;
  76.     PaintMandelbrot;
  77.     while NOT Keypressed do ;
  78.     UninitDemo;
  79.     CloseScreen;
  80. end.
  81.